<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <script src="./src/icreate.core.js"></script>
    	<script src="./src/icreate.dom.js"></script>
    	<script>
    		var arr = [],
            push = arr.push;

            //去重算法
           Icreate.contains=function( arr, item ){
           	// return arr.indexOf( item ) > -1;
           	for( var i=0;i<arr.length;i++){
           		if( arr[i] == item ) {
           			return true;
           		}
           	}
           	return false;
           }

           Icreate.unique = function ( arr ) {
           	var newArr=[];
           	for( var i=0; i<arr.length;i++ ){
           		if( !Icreate.contains( newArr, arr[i])){
           			newArr.push(arr[i]);
           		}
           	}
           	return newArr;
           }
           


        // 封装一个 将数组转换成 Itcast 对象的办法, 同时记录原先的 Itcast 对象

		Icreate.fn.pushStack = function ( array ) {
			 // this 以前的 Itcast 对象
            // 栈结构
            var tmp = this.constructor();
            push.apply( tmp, array );
            tmp.prevObject = this;
            return tmp;
		}    
		
		Icreate.fn.parent = function (){
			// 将每一个 this 中的元素的 父元素取出来, 构成 Itcast 对象
			return this.pushStack( Icreate.unique( this.map(function ( v, i ) {
                return v.parentNode;
            })));



			// this.constructor( selector ) => 符合选择器的所有元素
            // this.parent() => 所有父元素
            // 求交集
		}    

    	</script>
    </head>
    <body>
	    <div>
	        <p>1</p>
	        <p class="c">2</p>
	        <p class="d">3</p>
	        <p>ppp</p>
	    </div>
	    <div>
	        <p>4</p>
	        <p class="c">5</p>
	    </div>
	    <ul>
	        <p class="c">6</p>
	        <p>7</p>
	    </ul>
    </body>
    <script>
    var length = I('p').parent().each(function(){
    	this.style.border = '1px dashed red';
    }).length;

    console.log(length);
    </script>
</html>